1. Field of the Invention
The present invention relates to a computer program product, system and method for reactivation of a software image from a source machine onto a target machine.
2. Description of the Related Art
Deployment of software images is a commonplace activity in modern data-processing systems. A software image is a snapshot of a software structure that is installed on a mass memory of a machine. In particular, the software image of a virtual appliance comprises the definition of one or more virtual machines (i.e., emulations by software of physical machines) with a corresponding software appliance. The software appliance comprises one or more software applications (i.e., software programs performing specific user tasks) and corresponding Just Enough Operating Systems, or JeOSs (i.e., limited operating systems specifically tailored to support the software applications), which are encapsulated in a pre-built, self-contained unit. Virtual models may also be defined for composing software images, with the use of a port abstraction to negotiate their communication parameters, as described in “An Architecture for Virtual Solution Composition and Deployment in Infrastructure Cloud—Alexander V. Konstantinou, VTDC'09, Jun. 15, 2009, Barcelona, Spain” the entire disclosure of which is herein incorporated by reference in its entirety.
The software images allow provisioning the corresponding software structures in a simple and fast way. This is especially useful in cloud computing environments where multiple services are provided on demand. Moreover, the software images may be used for disaster recovery purposes (such as described in United States Patent Application No. 2009/0222466, the entire disclosure of which is herein incorporated by reference in its entirety) or for implementing remote security laboratories (such as described in “OpenLabs Security Laboratory—The Online Security Experiment Platform, J. Zackrisson et al., Blekings Institute of Technology/School of engineering, Ronneby, Sweden”, the entire disclosure of which is herein incorporated by reference in its entirety).
The process of deploying software images typically involves the preparation of a reference machine with the installation of an operating system and any additional software applications on top of it. A software image of the reference machine is then captured and stored into a shared repository, from which it may be copied and instantiated onto any desired target machines. Alternatively, the software image is directly migrated to the target machines from peer machines.
In any case, the software image (as captured on a source machine consisting of either the reference machine or the peer machine) often needs to be properly customized for working on the target machine, such as the assignment of a different address or hostname.
However, some software applications of the software image may have a source address and/or a source hostname embedded in their private data. Therefore, these software applications are unable to work on the target machine with a different target address and/or target hostname. Typical examples are software applications implementing server-side services (for example, database servers or application servers), which are listening for inbound requests on a hard-coded address or on an address mapping a hard-coded hostname.
The technique commonly used for addressing this problem is based on a re-activation process of the software image on the target machine (as briefly mentioned in the above-cited U.S. Patent Application No. 2009/0222466 as well). For this purpose, the software applications are introspected to determine whether any source address and/or source hostname are embedded in their private data. The source address and/or the source hostname are then replaced with the target address and the target hostname, respectively (either manually or by means of suitable scripts that are executed automatically at a first bootstrap of the target machine).
However, although this re-activation process may be quite trivial in specific situations (for example, for an operating system), in other situations it may be tedious, time-consuming and prone to errors (for example, for complex software applications). Moreover, in certain situations, the re-activation process may be unable to retrieve and update the source address and/or the source hostname embedded in the software applications. This may happen when the software applications have an unknown structure (for example, legacy software applications), or when this information is not accessible from the outside (for example, because stored in encrypted form).